package datenverwaltung;

import java.sql.Timestamp;
import java.util.Date;

/**
 * Repr�sentiert eine Meldung.
 * 
 * @author Felix
 * 
 */
public class Meldung {

	private String art, ort, tracker_id, meldung_id, beschreibung;
	private Timestamp erstellzeitpunkt;
	private GPSKoordinaten koordinaten;
	private int anzAktiv, anzInaktiv;
	private boolean bereitsBenachrichtigt = false;

	/**
	 * Initialisiert Attribute
	 * 
	 * @param art
	 *            Art
	 * @param ort
	 *            Ort
	 * @param tracker_id
	 *            Tracker-ID
	 * @param meldung_id
	 *            Meldungs-ID
	 * @param beschreibung
	 *            Beschreibung
	 * @param erstellzeitpunkt
	 *            Erstellzeitpunkt
	 * @param koordinaten
	 *            Koordinaten
	 * @param anzAktiv
	 *            Anzahl Aktiv-Angaben
	 * @param anzInaktiv
	 *            Anzahl Inaktiv-Angaben
	 */
	public Meldung(String art, String ort, String tracker_id,
			String meldung_id, String beschreibung, Timestamp erstellzeitpunkt,
			GPSKoordinaten koordinaten, int anzAktiv, int anzInaktiv) {
		super();
		this.art = art;
		this.ort = ort;
		this.tracker_id = tracker_id;
		this.meldung_id = meldung_id;
		this.beschreibung = beschreibung;
		this.erstellzeitpunkt = erstellzeitpunkt;
		this.koordinaten = koordinaten;
		this.anzAktiv = anzAktiv;
		this.anzInaktiv = anzInaktiv;
	}

	public String getArt() {
		return art;
	}

	public void setArt(String art) {
		this.art = art;
	}

	public String getOrt() {
		return ort;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}

	public String getTracker_id() {
		return tracker_id;
	}

	public void setTracker_id(String tracker_id) {
		this.tracker_id = tracker_id;
	}

	public String getMeldung_id() {
		return meldung_id;
	}

	public void setMeldung_id(String meldung_id) {
		this.meldung_id = meldung_id;
	}

	public String getBeschreibung() {
		return beschreibung;
	}

	public void setBeschreibung(String beschreibung) {
		this.beschreibung = beschreibung;
	}

	public Timestamp getErstellzeitpunkt() {
		return erstellzeitpunkt;
	}

	public void setErstellzeitpunkt(Timestamp erstellzeitpunkt) {
		this.erstellzeitpunkt = erstellzeitpunkt;
	}

	public GPSKoordinaten getKoordinaten() {
		return koordinaten;
	}

	public void setKoordinaten(GPSKoordinaten koordinaten) {
		this.koordinaten = koordinaten;
	}

	public int getAnzAktiv() {
		return anzAktiv;
	}

	public void setAnzAktiv(int anzAktiv) {
		this.anzAktiv = anzAktiv;
	}

	public int getAnzInaktiv() {
		return anzInaktiv;
	}

	public void setAnzInaktiv(int anzInaktiv) {
		this.anzInaktiv = anzInaktiv;
	}

	/**
	 * Berechnet die Zeitdifferenz, vom jetzigen Zeitpunkt zum Zeitpunkt der
	 * Meldung dieses ListenEintrags
	 * 
	 * @return einen String txt, der in Textform beschreibt, wie gro� die
	 *         Differenz in ca. ist
	 */
	public String getZeitDifferenzText() {
		Date d = new Date(System.currentTimeMillis());
		long dif = d.getTime() - this.getErstellzeitpunkt().getTime();
		int min = Math.round(dif / 60000);
		int h = -1, tage = -1;
		if (min > 59)
			h = min / 60;
		if (h > 23)
			tage = h / 24;

		String txt = new String();

		if (h == -1 && tage == -1)
			txt = "vor " + Integer.toString(min) + " min";
		else if (h != -1 && tage == -1)
			txt = "vor ca. " + Integer.toString(h) + " Std.";
		else if (h != -1 && tage != -1) {
			if (tage == 1)
				txt = "vor ca. " + Integer.toString(tage) + " Tag";
			else
				txt = "vor ca. " + Integer.toString(tage) + " Tagen";
		}
		return txt;
	}

	public void setBereitsBenachrichtigt(boolean bereitsBenachrichtigt) {
		this.bereitsBenachrichtigt = bereitsBenachrichtigt;
	}

	public boolean isBereitsBenachrichtigt() {
		return bereitsBenachrichtigt;
	}

	/**
	 * Gibt eine Meldungs-Information an einer übergebenen Position x zurück für
	 * die Ausgabe in einer Tabelle.
	 * 
	 * @param x
	 *            Position
	 * @return String der Meldungs-Information
	 */
	public String get(int x) {
		switch (x) {
		case 0:
			return meldung_id;
		case 1:	
			return art;
		case 2:
			return ort;
		case 3:
			return tracker_id;
		case 4:
			return erstellzeitpunkt.toString();
		case 5:
			return getZeitDifferenzText();
		default:
			return "";
		}
	}

}
